
import java.util.*;

/**
 * <p>
 * Botao instalado em um andar para solicitar o servico do Elevador.
 * </p>
 */
class BotaoDeRequisicao extends Botao {

  ///////////////////////////////////////
  // attributes


/**
 * <p>
 * Representa o andar em que se encontra instalado o BotaoDeRequisicao.
 * </p>
 */
    private int andarInstalado; 

/**
 * <p>
 * Representa a direcao em que o Passageiro pretende se locomover.
 * </p>
 */
    private int direcaoDesejada; 

   ///////////////////////////////////////
   // associations

/**
 * <p>
 * Representa o Controlador ao qual os botoes em botaoDescida sao
 * integrados.
 * </p>
 */
    protected Controlador controlador; 
/**
 * <p>
 * Representa o Controlador ao qual os botoes em botaoSubida sao integrados.
 * </p>
 */
    protected Controlador controlador_1; 


  ///////////////////////////////////////
  // operations


/**
 * <p>
 * Construtor de uma instancia de BotaoDeRequisicao.
 * </p>
 * 
 * @param andar - andar onde se encontra instalado o BotaoDeRequisicao.
 * 
 * @param direcao - Direcao de locomocao desejada por Passageiro.
 * 
 * @param controlador - Controlador ao que se encontra integrado o
 * BotaoDeRequisicao.
 * 
 * @return uma instancia de BotaoDeRequisicao.
 */
    public  BotaoDeRequisicao(int andar, int direcao, Controlador controlador) {        
        super();
        andarInstalado = andar;
        direcaoDesejada = direcao;
        this.controlador = controlador;
    } // end BotaoDeRequisicao        

/**
 * <p>
 * Requisita a vinda do Elevador e informa a direcao de locomocao desejada.
 * </p>
 */
    public void requisitarElevador() {        
        armar();
        controlador.registrarBotaoDeRequisicaoArmado(andarInstalado,direcaoDesejada);
        controlador.solicitarElevador(andarInstalado);
    } // end requisitarElevador        

/**
 * <p>
 * Registra que o pedido feito via o acionamento do Botao foi atendido.
 * </p>
 */
    public void registrarElevadorNoAndar() {        
        desarmar();
        controlador.registrarBotaoDeRequisicaoDesarmado(andarInstalado, direcaoDesejada);
    } // end registrarElevadorNoAndar        

 } // end BotaoDeRequisicao



